/*
 * @Author: your name
 * @Date: 2022-02-04 13:48:44
 * @LastEditTime: 2022-02-04 14:34:05
 * @LastEditors: Please set LastEditors
 * @Description: 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
 * @FilePath: \ts\07类的使用.ts
 */
// 基础类, 默认属性和方法都是public共有
class C1 {
   name='kele'
   age=23
   sayH():void {
       console.log('你好')
   }
}
let c_chid1 : C1 = new C1()
let c_chid2 : C1 = new C1()

c_chid2.name ='小鱼'
c_chid1.sayH()

console.log(c_chid1.name)

 // 类的继承和重写

  class C3 {
      name:string='kele'
     say() {
      return this.name
     }
     sayHi() {
         console.log('hi')
     }
  }

  // 继承
  class C4 extends C3 {
    sayHi(): void {
        // 重写了父类C3
        console.log('小鱼你好啊')
    }
  }

  let c_chid3 = new C4()
  console.log('继承',c_chid3.say()) // 调用继承过来的方法
  c_chid3.sayHi()


  // super关键字调用父类, 在子类内部可以通过super关键字调用父类方法, 属性不能直接调用
  // 不能 super.name, 可以通过this.name
  
  class C5 extends C3 {
      sayHello() {
          console.log(this.name + this.say() + super.say() + '子类')
      }
  }

let c_chid4 = new C5()
c_chid4.sayHello()
